New function, copied from gtkpathbar.c.
authorFederico Mena Quintero <federico@ximian.com>
Thu, 11 Mar 2004 20:03:38 +0000 (20:03 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Thu, 11 Mar 2004 20:03:38 +0000 (20:03 +0000)
2004-03-11  Federico Mena Quintero  <federico@ximian.com>

* gtk/gtkfilechooserdefault.c (remove_settings_signal): New
function, copied from gtkpathbar.c.
(gtk_file_chooser_default_dispose): Use remove_settings_signal()
rather than our own code.
(gtk_file_chooser_default_screen_changed): Use
remove_settings_signal(); this should handle per-screen settings
correctly.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkfilechooserdefault.c

index b46a04fbdb9bd569eb461fc8c5be5711a32c4ad8..ca3cdef55a74f826662ba4ff114fa7bf98856955 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2004-03-11  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (remove_settings_signal): New
+       function, copied from gtkpathbar.c.
+       (gtk_file_chooser_default_dispose): Use remove_settings_signal()
+       rather than our own code.
+       (gtk_file_chooser_default_screen_changed): Use
+       remove_settings_signal(); this should handle per-screen settings
+       correctly.
+
 Thu Mar 11 14:07:18 2004  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_focus): Fix a missing return
index b46a04fbdb9bd569eb461fc8c5be5711a32c4ad8..ca3cdef55a74f826662ba4ff114fa7bf98856955 100644 (file)
@@ -1,3 +1,13 @@
+2004-03-11  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (remove_settings_signal): New
+       function, copied from gtkpathbar.c.
+       (gtk_file_chooser_default_dispose): Use remove_settings_signal()
+       rather than our own code.
+       (gtk_file_chooser_default_screen_changed): Use
+       remove_settings_signal(); this should handle per-screen settings
+       correctly.
+
 Thu Mar 11 14:07:18 2004  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_focus): Fix a missing return
index b46a04fbdb9bd569eb461fc8c5be5711a32c4ad8..ca3cdef55a74f826662ba4ff114fa7bf98856955 100644 (file)
@@ -1,3 +1,13 @@
+2004-03-11  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (remove_settings_signal): New
+       function, copied from gtkpathbar.c.
+       (gtk_file_chooser_default_dispose): Use remove_settings_signal()
+       rather than our own code.
+       (gtk_file_chooser_default_screen_changed): Use
+       remove_settings_signal(); this should handle per-screen settings
+       correctly.
+
 Thu Mar 11 14:07:18 2004  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_focus): Fix a missing return
index b46a04fbdb9bd569eb461fc8c5be5711a32c4ad8..ca3cdef55a74f826662ba4ff114fa7bf98856955 100644 (file)
@@ -1,3 +1,13 @@
+2004-03-11  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (remove_settings_signal): New
+       function, copied from gtkpathbar.c.
+       (gtk_file_chooser_default_dispose): Use remove_settings_signal()
+       rather than our own code.
+       (gtk_file_chooser_default_screen_changed): Use
+       remove_settings_signal(); this should handle per-screen settings
+       correctly.
+
 Thu Mar 11 14:07:18 2004  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_focus): Fix a missing return
index b46a04fbdb9bd569eb461fc8c5be5711a32c4ad8..ca3cdef55a74f826662ba4ff114fa7bf98856955 100644 (file)
@@ -1,3 +1,13 @@
+2004-03-11  Federico Mena Quintero  <federico@ximian.com>
+
+       * gtk/gtkfilechooserdefault.c (remove_settings_signal): New
+       function, copied from gtkpathbar.c.
+       (gtk_file_chooser_default_dispose): Use remove_settings_signal()
+       rather than our own code.
+       (gtk_file_chooser_default_screen_changed): Use
+       remove_settings_signal(); this should handle per-screen settings
+       correctly.
+
 Thu Mar 11 14:07:18 2004  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_focus): Fix a missing return
index c7d9d7e12ab9e92b08341cbdd2d03b4ca40bbdd5..bde958ff5d8606dd5f97234bd028615147cadd8c 100644 (file)
@@ -3205,6 +3205,21 @@ gtk_file_chooser_default_get_property (GObject    *object,
     }
 }
 
+/* Removes the settings signal handler.  It's safe to call multiple times */
+static void
+remove_settings_signal (GtkFileChooserDefault *impl,
+                       GdkScreen             *screen)
+{
+  if (impl->settings_signal_id)
+    {
+      GtkSettings *settings;
+
+      settings = gtk_settings_get_for_screen (screen);
+      g_signal_handler_disconnect (settings,
+                                  impl->settings_signal_id);
+      impl->settings_signal_id = 0;
+    }
+}
 
 static void
 gtk_file_chooser_default_dispose (GObject *object)
@@ -3217,14 +3232,7 @@ gtk_file_chooser_default_dispose (GObject *object)
       impl->extra_widget = NULL;
     }
 
-  if (impl->settings_signal_id)
-    {
-      GtkSettings *settings;
-
-      settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
-      g_signal_handler_disconnect (settings, impl->settings_signal_id);
-      impl->settings_signal_id = 0;
-    }
+  remove_settings_signal (impl, gtk_widget_get_screen (GTK_WIDGET (impl)));
 
   G_OBJECT_CLASS (parent_class)->dispose (object);
 }
@@ -3322,6 +3330,7 @@ gtk_file_chooser_default_screen_changed (GtkWidget *widget,
   if (GTK_WIDGET_CLASS (parent_class)->screen_changed)
     GTK_WIDGET_CLASS (parent_class)->screen_changed (widget, previous_screen);
 
+  remove_settings_signal (impl, previous_screen);
   check_icon_theme (impl);
 
   g_signal_emit_by_name (widget, "default-size-changed");